Today increasingly, a complex large-scale computing environment is composed of multiple systems. These systems are independently developed and interact with each other, as well as interact with the user(s). Each of these systems in the environment manages a great number of resources. Some resources, however, may be limited in their availability either due to the constraints of tasks or processes utilizing them or due to problems with reliability of hardware or software portions thereof.
A challenge in such environments is effective scheduling, management and allocation of resources in the face of usage and/or reliability concerns as well as system maintenance and upgrade or update activities.